/*
8.1
 1. new的理解 
 2. IIFE特点
 3. 判断回调函数的三个条件
*/

// function Person() {
//   console.log(this)
// }
// let obj = new Person()   
//  const obj = {}    // 创建出一个空的对象
//  Person.call(obj)  // 执行函数内部代码
//  obj.__proto__ = Person.prototype // 将实例对象的隐式原型指向构造函数的显示原型
//  返回obj      // 如果没有返回对象 那么返回obj


// 立即执行函数特点: 定义的时候自动执行 ; 只会调用一次 ; 不会发生预解析
// 立即执行函数作用: 隔离变量作用域 , 避免变量污染

// 回调函数: 自己定义的 ; 自己没有直接调用 ; 最后执行了的
// 数组的方法 很多都是回调函数

/* 
8.2
宏任务和微任务 与 页面渲染的关系
详见 01.html
*/


/* let c = { greeting: "Hey!" };
let d;
d = c;
c.greeting = "Hello";
console.log(d.greeting);
*/



/* 
let a = 3;
let b = new Number(3);
let c = 3;
console.log(a == b);
console.log(a === b);
console.log(b === c);
console.log(a === c);
 */




/* 
function Person (firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}
const member = new Person("Lydia", "Hallie");
Person.getFullName = () => this.firstName
console.log(Person.getFullName());
 */




/* 
var f = function g () {
  return 20
}
console.log(typeof g());
*/




/* 
const foo = () => console.log("First");
const bar = () => setTimeout(() => console.log("Second"));
const baz = () => console.log("Third");
bar();
foo();
baz();
*/